// 扩展运算符(...)，提供了创建数组浅层克隆的最简单和最常用的方法。
let x1 = [1, 2, 3, 4];
let y2 = [...x];

// Array.from() 非常强大的 API，可用于许多不同的事情，包括创建数组的副本。
let x = [1, 2, 3, 4];
let y = Array.from(x);

// 与扩展运算符类似，Array.prototype.slice() 切割，也可用于创建数组的浅拷贝。
let x = [1, 2, 3, 4];
let y = x.slice();

// Array.prototype.map()可用于将数组的每个元素映射到自身以创建新数组。
let x = [1, 2, 3, 4];
let y = x.map(i => i);

// Array.prototype.filter() 可用于 true 为每个元素返回，从而产生一个包含所有原始数组元素的新数组。
let x = [1, 2, 3, 4];
let y = x.filter(() => true);

// Object.assign() 可以与用于创建对象的克隆完全相同的方式使用，用于数组。
let x = [1, 2, 3, 4];
let y = Object.assign([], x);